package Leetcode.lc049;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;

/***
 * 给你一个字符串数组，请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
 *
 * 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
 */
public class Sloution {
    public List<List<String>> groupAnagrams(String[] strs) {
        //保存序列化后的字符串源码
        HashMap<String, List<String>> map = new HashMap<>();
        //结果保存，用hashmap保存
        List<List<String>> res = new ArrayList<>();
        //开始遍历
        for(int i=0;i<strs.length;i++){
            char[] chartemp = strs[i].toCharArray();
            Arrays.sort(chartemp);
            //注意，toString不可以乱用，不会返回正常的字符串
            String stringtemp = new String(chartemp);
            //从map里获得该值
            List<String> strings = map.getOrDefault(stringtemp, new ArrayList<>());
            strings.add(strs[i]);
            map.put(stringtemp,strings);
        }
        //map转换list结果集,流
        res=map.values().stream().collect(Collectors.toList());
        return res;
    }

    public static void main(String[] args) {
        Sloution sloution = new Sloution();
        String[] strings = {"sadasd","dsadsad","ab","ba"};
        List<List<String>> lists = sloution.groupAnagrams(strings);
        System.out.println(1);

    }

}
